1. Field of the Invention
The present invention relates to cable television and, more particularly, to a method, apparatus, and system for invoking third-party call control via a cable-television host device.
2. Description of Related Art
a. Cable Television
Few households in this country are without cable television. Typically, cable-television subscribers will have a cable-ready television connected via coaxial cable to a set-top box (STB) provided by a cable company (also known as a “cable-television-service provider” (CTSP)). The STB is, in turn, connected via coaxial cable to a wall outlet in the cable-television subscriber's home. This outlet represents a point-of-access to the CTSP's network, so that cable-television service may be provided to the subscriber. It has also become common for STBs to have digital capabilities, such as decoding a digital cable-television signal so that the subscriber can watch premium channels and pay-per-view events, in accordance with their particular subscription.
Cable-television service is typically provided on a number of channels, each occupying a discrete range of the cable-television spectrum. The cable-television spectrum is close to 1 GHz; most cable-television systems, however, use less than this maximum capacity, differing as to the amount actually used. Some systems have the capacity to provide channels over a frequency range of 54-350 MHz, while others may span 54-450 MHz, 54-550 MHz, or 54-750 MHz, etc., based in part on the varying needs of different service areas. Some recently constructed cable-television systems can provide channels over a spectrum with an upper end as high as 860 MHz.
Whatever spectrum a cable system uses above 54 MHz has traditionally been divided into 6-MHz-wide channels, each delivering one National Television Standards Committee analog television signal. Cable systems have recently introduced digital technology, and to preserve existing analog services, many systems use the portion of the spectrum above their prior usage for delivery of digital services. Furthermore, one 6-MHz-wide channel, known as the out-of-band management channel, is reserved for forward signaling purposes, to deliver conditional access and management messages, interactive program guides, and other data to STBs. The out-of-band management channel typically spans a 6-MHz-wide range below 50 MHz, though any one of the channels above 50 or 54 MHz may be used as well. And in addition to being able to receive data on the out-of-band management channel, STBs typically can use the channel to transmit messages to the CTSP's network to, for example, order pay-per-view movies.
Furthermore, many CTSPs have begun providing packet-data service to customers via existing cable-television networks. Customers using this service typically have a device known as a “cable modem” connected via coaxial cable to a wall outlet in their home. The cable modem typically acts as an interface between (i) the RF signals carried via the CTSP's HFC (Hybrid Fiber/Coaxial) network and (ii) the Ethernet signals carried by Ethernet cable between the cable modem and a packet-based device such as a personal computer or router.
The signals sent and received by cable modems typically use frequencies higher than those used for cable-television and the out-of-band management channel, though cable-modem signaling may be referred to as “out of band” as well, in that it occupies a range other than that used for television. As STBs and cable modems develop, many CTSPs are offering STBs having an integrated cable modem. These STBs are thus able to send and receive packet data at a rate much higher than the earlier-described STBs, which are sometimes known as “legacy” boxes.
b. Encoding Data in a Video Signal
It is known to encode data, such as a telephone number, into a video signal, such as an RF cable-television signal. One way of accomplishing this encoding is described in U.S. Pat. No. 5,570,295 to Isenberg et al., which is incorporated herein by reference. Isenberg teaches including an “escape sequence” in a video signal, followed by the data itself. Isenberg teaches that the escape sequence would comprise a “sequence of special characters not commonly used, hence easily recognized.” A receiving system, such as a set-top box, would identify the escape sequence, and then capture the data. Isenberg suggests encoding the data into the “vertical blanking interval” (“vertical retrace interval”) at the end of a frame of an analog video signal, or into any convenient portion of a digital video signal. If the data is a telephone number, the STB may then place a call to the associated number via a direct connection to a telephone network.
c. The Session Initiation Protocol (SIP)
Along with the development of the Internet, a protocol called the Session Initiation Protocol (SIP) has developed. SIP is a protocol useful for transmitting short messages between entities connected via one or more data networks, and is primarily used to set up, or initiate, media or communication sessions between entities. Relevant aspects of SIP are described in “SIP: Session Initiation Protocol,” RFC 3261 (June 2002), which is incorporated by reference.
SIP is based on a request-response model similar to HTTP. Defined SIP requests (“methods”) include INVITE and REGISTER, among others. SIP responses are associated with a three-digit number, placing each response in a class of responses. Responses of the form “1xx” (“180 Ringing”) are provisional or informational responses, and indicate that the request is progressing but is not yet complete. “2xx” responses (“200 OK”) indicate success, meaning that the request has completed successfully. “3xx” responses (“302 Moved Temporarily”) indicate redirection, meaning that the requesting party should send the request to another location. “4xx” responses (“486 Busy Here”), “5xx” responses (“503 Service Unavailable”), and “6xx” responses (“603 Decline”) indicate that some type of error or failure has occurred.
To set up a communication session between two entities, the first entity sends the second entity an INVITE request. The second entity may then respond with a 200 OK. When this is acknowledged by the first entity sending an ACK message to the second entity, the two entities have agreed on the parameters for the session, and may then send packets to each other as part of the session. INVITE, OK, and ACK messages have message bodies to carry the parameter data, or “session description information,” which typically conforms to a protocol known as the Session Description Protocol (SDP), relevant aspects of which are described in “SDP: Session Description Protocol,” RFC 2327 (April 1998), and “Support for IPv6 in Session Description Protocol (SDP),” RFC 3266 (June 2002), which are incorporated herein by reference.
In most SIP implementations, a server called a proxy or call agent maintains information about which users are currently logged in and how those users may be contacted, and forwards messages from sender to recipient, among other functions. When a SIP entity (such as a packet-based telephone) logs on, it would typically send a REGISTER message to the proxy, which would associate the entity's IP address with a SIP address (sip:user@domain) for later use.
d. Third-Party Call Control
SIP is useful in many contexts, one of which is third-party call control (3PCC), in which an entity known as a “controller” or “call management server” engages in signaling with two or more parties to set up a telephone call between or among the parties. 3PCC may be conducted with circuit-switched, packet-based, cellular wireless, other types of telephones, or any mixture thereof. Furthermore, 3PCC may be conducted using any number of protocols, including such circuit-switched protocols as ISUP (ISDN User Part) and such packet-based protocols as SIP. Relevant aspects of 3PCC using SIP are described in “Best Current Practices for Third Party Call Control (3pcc) in the Session Initiation Protocol (SIP),” RFC 3725 (April 2004), which is incorporated herein by reference.
3PCC in SIP typically involves a series of the above-described INVITE/OK/ACK exchanges between the controller and each party to the call. For simplicity, an example involving a controller setting up a call between two parties (“Phones A and B”) will be described here. Furthermore, in this example, both Phone A and Phone B are packet-based telephones, capable of acting as SIP user agents (sending and receiving SIP messages).
To begin, the controller sends Phone A an INVITE message with no session description information. Phone A then sends a 200 OK to the controller, also without session description information. The controller sends an ACK to Phone A, including an IP address of 0.0.0.0 as the address Phone A “should” contact to begin the session. The use of this IP address, by convention, puts Phone A into an “on hold” state, and conveys to Phone A that it will later receive an INVITE message containing more substantive, useful parameters, which Phone A will then use to actually participate in a communication session.
Next, the controller sends an INVITE to Phone B, again not including session description information. Phone B responds by sending a 200 OK to the controller, though here, Phone B includes session description information, conveying media parameters (protocols, encoding, etc.) that would be acceptable to Phone B. The controller adjusts this session description information if necessary, and then sends an INVITE to Phone A that includes Phone B's “offer.” Phone A responds with a 200 OK, including a message body having session description information that reflects Phone A's acceptance or rejection of the parameters from Phone B's offer.
The controller then determines a compatible set of parameters, adjusting the session description information from Phone A's “answer” if necessary, and transmits these parameters in an ACK to Phone B. The controller then sends an ACK to Phone A. Since the parameters for the session have been determined and conveyed to both parties, Phone A and Phone B may now send packets to each other that conform to these parameters, for the duration of the arranged call.